Similar Question
Solution Tips
方案一: 哈希计数 + Gcd
var hasGroupsSizeX = function (deck) {
let map = new Map()
// [1,1,1] 也是OK的,x=3
if (deck.length <= 1) return false
for (let i = 0; i < deck.length; i++) {
if (map.get(deck[i]) === undefined) {
map.set(deck[i], 1)
} else {
map.set(deck[i], map.get(deck[i]) + 1)
}
}
let result = [...map.values()].sort()
// 先判断头尾,如果相余为0,再判断剩余的
let len = result.length
let min = result[0]
// 应该求的是最大公因数
for (let i = 1; i < len; i++) {
min = getGreatestCommonDivisor(result[i], min);
}
return min >= 2;
function getGreatestCommonDivisor(a, b) {
if (b === 0) return a
return getGreatestCommonDivisor(b, a % b)
}
};
console.log(hasGroupsSizeX([1,1,1,2,2,2,3,3]));